package com.weipai.springboot.module.mapper;

import com.weipai.springboot.model.ProductCategory;
import com.weipai.springboot.model.api.Tree;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

import java.util.List;
import java.util.Map;

/**
 * 货品类别mapper
 */
public interface ProductCategoryMapper extends Mapper<ProductCategory>, MySqlMapper<ProductCategory>{

    //查询商品类别详情
    ProductCategory getProductCategoryById(String id);

    //查询顶级分类/一级分类/二级分类的--分页列表
    List<ProductCategory> selectAllByRankDel(@Param("del") int del, 
                                           @Param("rank") String rank,
                                           @Param("sort")String sort,
                                           @Param("way")String way,
                                           @Param("id") String goodsCategoryId);

    //查看此分类下面是否还有有效的分类--统计数量
    Integer getValidChildCountById(@Param("id") String id);

    //批量删除
    int batchDeleteById(String[] id);

    //通过名称查询分类
    int getProductCategoryByName(String name);

    //更改状态
    @Update("update c_product_category set product_category_status=#{status}, update_time=date_format(now(), '%Y-%m-%d %H:%i:%s') " +
            "where product_category_id=#{id}")
    int updateStatus(@Param("id")String id, @Param("status")Integer status);

    //查询三级分类
    List<ProductCategory> getAllProductCategory();


    //查询三级分类
    List<Tree> getAllProductCategoryV2();

    //首页一级分类
    List<ProductCategory> getChildCategory(@Param("pid") String pid);

    //根据分类查询关联的品牌
    List<Map<String,Object>> getCategoryBrands(String id);

    //根据商品分类id查询搜索结果页列表
    List<Map<String,Object>> getSearchPropertyByCategory(String id);

    //根据顶级查询第三级分类
    List<ProductCategory> getThirdCategoryByTopId(String id);

    List<Map<String,Object>> getProductCategoryByPid(String parentId);

    Integer getProductId(@Param("id") String id);
}